home *** CD-ROM | disk | FTP | other *** search
/ Software of the Month Club 2000 October / Software of the Month - Ultimate Collection Shareware 277.iso / pc / PROGRAMS / UTILITY / WINLINUX / DATA1.CAB / programs_-_include / LINUX / KBD_KERN.H < prev    next >
C/C++ Source or Header  |  1999-09-17  |  4KB  |  165 lines

  1. #ifndef _KBD_KERN_H
  2. #define _KBD_KERN_H
  3.  
  4. #include <linux/interrupt.h>
  5. #include <linux/keyboard.h>
  6.  
  7. extern int shift_state;
  8.  
  9. extern char *func_table[MAX_NR_FUNC];
  10. extern char func_buf[];
  11. extern char *funcbufptr;
  12. extern int funcbufsize, funcbufleft;
  13.  
  14. /*
  15.  * kbd->xxx contains the VC-local things (flag settings etc..)
  16.  *
  17.  * Note: externally visible are LED_SCR, LED_NUM, LED_CAP defined in kd.h
  18.  *       The code in KDGETLED / KDSETLED depends on the internal and
  19.  *       external order being the same.
  20.  *
  21.  * Note: lockstate is used as index in the array key_map.
  22.  */
  23. struct kbd_struct {
  24.  
  25.     unsigned char lockstate;
  26. /* 8 modifiers - the names do not have any meaning at all;
  27.    they can be associated to arbitrarily chosen keys */
  28. #define VC_SHIFTLOCK    KG_SHIFT    /* shift lock mode */
  29. #define VC_ALTGRLOCK    KG_ALTGR    /* altgr lock mode */
  30. #define VC_CTRLLOCK    KG_CTRL     /* control lock mode */
  31. #define VC_ALTLOCK    KG_ALT      /* alt lock mode */
  32. #define VC_SHIFTLLOCK    KG_SHIFTL    /* shiftl lock mode */
  33. #define VC_SHIFTRLOCK    KG_SHIFTR    /* shiftr lock mode */
  34. #define VC_CTRLLLOCK    KG_CTRLL     /* ctrll lock mode */
  35. #define VC_CTRLRLOCK    KG_CTRLR     /* ctrlr lock mode */
  36.     unsigned char slockstate;     /* for `sticky' Shift, Ctrl, etc. */
  37.  
  38.     unsigned char ledmode:2;     /* one 2-bit value */
  39. #define LED_SHOW_FLAGS 0        /* traditional state */
  40. #define LED_SHOW_IOCTL 1        /* only change leds upon ioctl */
  41. #define LED_SHOW_MEM 2          /* `heartbeat': peek into memory */
  42.  
  43.     unsigned char ledflagstate:3;    /* flags, not lights */
  44.     unsigned char default_ledflagstate:3;
  45. #define VC_SCROLLOCK    0    /* scroll-lock mode */
  46. #define VC_NUMLOCK    1    /* numeric lock mode */
  47. #define VC_CAPSLOCK    2    /* capslock mode */
  48.  
  49.     unsigned char kbdmode:2;    /* one 2-bit value */
  50. #define VC_XLATE    0    /* translate keycodes using keymap */
  51. #define VC_MEDIUMRAW    1    /* medium raw (keycode) mode */
  52. #define VC_RAW        2    /* raw (scancode) mode */
  53. #define VC_UNICODE    3    /* Unicode mode */
  54.  
  55.     unsigned char modeflags:5;
  56. #define VC_APPLIC    0    /* application key mode */
  57. #define VC_CKMODE    1    /* cursor key mode */
  58. #define VC_REPEAT    2    /* keyboard repeat */
  59. #define VC_CRLF        3    /* 0 - enter sends CR, 1 - enter sends CRLF */
  60. #define VC_META        4    /* 0 - meta, 1 - meta=prefix with ESC */
  61. };
  62.  
  63. extern struct kbd_struct kbd_table[];
  64.  
  65. extern int kbd_init(void);
  66.  
  67. extern unsigned char getledstate(void);
  68. extern void setledstate(struct kbd_struct *kbd, unsigned int led);
  69.  
  70. extern int do_poke_blanked_console;
  71.  
  72. extern inline void show_console(void)
  73. {
  74.     do_poke_blanked_console = 1;
  75.     mark_bh(CONSOLE_BH);
  76. }
  77.  
  78. extern inline void set_console(int nr)
  79. {
  80.     want_console = nr;
  81.     mark_bh(CONSOLE_BH);
  82. }
  83.  
  84. extern inline void set_leds(void)
  85. {
  86.     mark_bh(KEYBOARD_BH);
  87. }
  88.  
  89. extern inline int vc_kbd_mode(struct kbd_struct * kbd, int flag)
  90. {
  91.     return ((kbd->modeflags >> flag) & 1);
  92. }
  93.  
  94. extern inline int vc_kbd_led(struct kbd_struct * kbd, int flag)
  95. {
  96.     return ((kbd->ledflagstate >> flag) & 1);
  97. }
  98.  
  99. extern inline void set_vc_kbd_mode(struct kbd_struct * kbd, int flag)
  100. {
  101.     kbd->modeflags |= 1 << flag;
  102. }
  103.  
  104. extern inline void set_vc_kbd_led(struct kbd_struct * kbd, int flag)
  105. {
  106.     kbd->ledflagstate |= 1 << flag;
  107. }
  108.  
  109. extern inline void clr_vc_kbd_mode(struct kbd_struct * kbd, int flag)
  110. {
  111.     kbd->modeflags &= ~(1 << flag);
  112. }
  113.  
  114. extern inline void clr_vc_kbd_led(struct kbd_struct * kbd, int flag)
  115. {
  116.     kbd->ledflagstate &= ~(1 << flag);
  117. }
  118.  
  119. extern inline void chg_vc_kbd_lock(struct kbd_struct * kbd, int flag)
  120. {
  121.     kbd->lockstate ^= 1 << flag;
  122. }
  123.  
  124. extern inline void chg_vc_kbd_slock(struct kbd_struct * kbd, int flag)
  125. {
  126.     kbd->slockstate ^= 1 << flag;
  127. }
  128.  
  129. extern inline void chg_vc_kbd_mode(struct kbd_struct * kbd, int flag)
  130. {
  131.     kbd->modeflags ^= 1 << flag;
  132. }
  133.  
  134. extern inline void chg_vc_kbd_led(struct kbd_struct * kbd, int flag)
  135. {
  136.     kbd->ledflagstate ^= 1 << flag;
  137. }
  138.  
  139. #define U(x) ((x) ^ 0xf000)
  140.  
  141. /* keyboard.c */
  142.  
  143. struct console;
  144.  
  145. int getkeycode(unsigned int scancode);
  146. int setkeycode(unsigned int scancode, unsigned int keycode);
  147. void compute_shiftstate(void);
  148. int keyboard_wait_for_keypress(struct console *);
  149.  
  150. /* defkeymap.c */
  151.  
  152. extern unsigned int keymap_count;
  153.  
  154. /* console.c */
  155.  
  156. extern task_queue con_task_queue;
  157.  
  158. extern inline void con_schedule_flip(struct tty_struct *t)
  159. {
  160.     queue_task(&t->flip.tqueue, &con_task_queue);
  161.     mark_bh(CONSOLE_BH);
  162. }
  163.  
  164. #endif
  165.